ã°ããŒãã«èŠæš¡ã§å®å šãã€ãŠãŒã¶ãŒãã¬ã³ããªãŒãªèªèšŒãä¿èšŒãããSMSæ€èšŒã®ããã®å ç¢ãªããã³ããšã³ãWeb OTPïŒã¯ã³ã¿ã€ã ãã¹ã¯ãŒãïŒãããŒãžã£ãŒã®èšèšãšå®è£ ãæ¢æ±ããŸãã
ããã³ããšã³ãWeb OTPãããŒãžã£ãŒïŒã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³åãå®å šãªSMSåŠçã·ã¹ãã ã®æ§ç¯
仿¥ã®çžäºæ¥ç¶ãããäžçã§ã¯ãå®å šãªãŠãŒã¶ãŒèªèšŒã®ç¢ºä¿ãæãéèŠã§ãã SMSãä»ããŠé ä¿¡ãããã¯ã³ã¿ã€ã ãã¹ã¯ãŒãïŒOTPïŒã¯ããŠãŒã¶ãŒIDãæ€èšŒããããã®ãŠããã¿ã¹ãªæ¹æ³ãšãªã£ãŠããŸãã ãã®ããã°èšäºã§ã¯ãã°ããŒãã«ã«å±éã§ããå®å šã§äœ¿ããããã·ã¹ãã ãæ§ç¯ããããšã«çŠç¹ãåœãŠãããã³ããšã³ãWeb OTPãããŒãžã£ãŒã®ã¢ãŒããã¯ãã£ãšå®è£ ã«ã€ããŠæãäžããŸãã ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®ãã¶ã€ã³ãåœéåæŠç¥ãã«ããŒããéçºè ãšã¢ãŒããã¯ãã«ãšã£ãŠéèŠãªèæ ®äºé ãæ€èšŒããŸãã
1. ã¯ããã«ïŒå®å šãªOTPã·ã¹ãã ã®éèŠæ§
OTPããŒã¹ã®èªèšŒã¯ãäžæ£ã¢ã¯ã»ã¹ãããŠãŒã¶ãŒã¢ã«ãŠã³ããä¿è·ããéèŠãªã»ãã¥ãªãã£å±€ãæäŸããŸãã SMSé ä¿¡ã¯ããŠãŒã¶ãŒããããã®æéçå¶çŽã®ããã³ãŒããåä¿¡ããããã®äŸ¿å©ãªæ¹æ³ãæäŸããç¹ã«ã¢ãã€ã«ãã¡ãŒã¹ãã®ã¢ããªã±ãŒã·ã§ã³ããããŸããŸãªå°åã§ã¢ã¯ã»ã¹å¯èœãªãµãŒãã¹ã®ã»ãã¥ãªãã£ã匷åããŸãã é©åã«èšèšãããããã³ããšã³ãWeb OTPãããŒãžã£ãŒãæ§ç¯ããããšã¯ããŠãŒã¶ãŒããŒã¿ãä¿è·ãããŠãŒã¶ãŒã®ä¿¡é Œãç¶æããããã«äžå¯æ¬ ã§ãã é©åã«å®è£ ãããŠããªãã·ã¹ãã ã¯æ»æã«å¯ŸããŠè匱ã«ãªããããŒã¿äŸµå®³ãè©å€ã®äœäžã«ã€ãªããå¯èœæ§ããããŸãã
2. ããã³ããšã³ãWeb OTPãããŒãžã£ãŒã®äž»èŠã³ã³ããŒãã³ã
å ç¢ãªããã³ããšã³ãWeb OTPãããŒãžã£ãŒã¯ãã·ã¹ãã ã®å šäœçãªæ©èœãšã»ãã¥ãªãã£ã«ãããŠéèŠãªåœ¹å²ãæããããã€ãã®äž»èŠã³ã³ããŒãã³ããå å«ããŠããŸãã ãããã®ã³ã³ããŒãã³ããçè§£ããããšã¯ã广çãªèšèšãšå®è£ ã®ããã«äžå¯æ¬ ã§ãã
2.1. ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒ
UIã¯ããŠãŒã¶ãŒãã·ã¹ãã ãšå¯Ÿè©±ããäž»èŠãªãã€ã³ãã§ãã çŽæçã§ãããã²ãŒããããããOTPãå ¥åããããã®æç¢ºãªæç€ºãæäŸããå¿ èŠããããŸãã UIã¯ãŸããäžæ£ãªã³ãŒãããããã¯ãŒã¯ãšã©ãŒãªã©ãæœåšçãªåé¡ã«ã€ããŠãŠãŒã¶ãŒãæ¡å ãããšã©ãŒã¡ãã»ãŒãžãé©åã«åŠçããå¿ èŠããããŸãã ããŸããŸãªç»é¢ãµã€ãºãšããã€ã¹ã«å¯Ÿå¿ããããã«èšèšããããŸããŸãªãã©ãããã©ãŒã ã§å¿çæ§ãé«ããã¢ã¯ã»ã¹å¯èœãªãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããšãæ€èšããŠãã ããã ããã°ã¬ã¹ã€ã³ãžã±ãŒã¿ãŒãã«ãŠã³ãããŠã³ã¿ã€ããŒãªã©ã®æç¢ºãªèŠèŠçãªæãããã䜿çšãããšããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããã«åäžããŸãã
2.2. ããã³ããšã³ãããžãã¯ïŒJavaScript/ãã¬ãŒã ã¯ãŒã¯ïŒ
éåžžãJavaScriptãReactãAngularãVue.jsãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠå®è£ ãããããã³ããšã³ãããžãã¯ã¯ãOTPæ€èšŒããã»ã¹ã調æŽããŸãã ãã®ããžãã¯ã¯ã次ã®åŠçãæ åœããŸãã
- ãŠãŒã¶ãŒå ¥åã®åŠçïŒãŠãŒã¶ãŒãå ¥åããOTPããã£ããã£ããŸãã
- APIãšã®ããåãïŒæ€èšŒã®ããã«OTPãããã¯ãšã³ãã«éä¿¡ããŸãã
- ãšã©ãŒåŠçïŒAPIã®å¿çã«åºã¥ããŠããŠãŒã¶ãŒã«é©åãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŸãã
- ã»ãã¥ãªãã£å¯ŸçïŒäžè¬çãªè匱æ§ïŒäŸïŒã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒïŒã«å¯Ÿããä¿è·ã®ããã«ãã¯ã©ã€ã¢ã³ãåŽã®ã»ãã¥ãªãã£å¯ŸçïŒå ¥åæ€èšŒãªã©ïŒãå®è£ ããŸãã ã¯ã©ã€ã¢ã³ãåŽã®æ€èšŒãå¯äžã®é²åŸ¡çã§ã¯ãªãããšãèŠããŠããããšãéèŠã§ãããåºæ¬çãªæ»æãé²ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããšãã§ããŸãã
2.3. ããã¯ãšã³ããµãŒãã¹ãšã®éä¿¡ïŒAPIåŒã³åºãïŒ
ããã³ããšã³ãã¯ãAPIåŒã³åºããéããŠããã¯ãšã³ããšéä¿¡ããŸãã ãããã®åŒã³åºãã¯ã次ã®åŠçãæ åœããŸãã
- OTPãªã¯ãšã¹ãã®éå§ïŒOTPããŠãŒã¶ãŒã®é»è©±çªå·ã«éä¿¡ããããã«ããã¯ãšã³ãã«èŠæ±ããŸãã
- OTPã®æ€èšŒïŒãŠãŒã¶ãŒãå ¥åããOTPãæ€èšŒã®ããã«ããã¯ãšã³ãã«éä¿¡ããŸãã
- å¿çã®åŠçïŒéåžžã¯æåãŸãã¯å€±æã瀺ãããã¯ãšã³ãããã®å¿çãåŠçããŸãã
3. ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé ïŒè匱æ§ããã®ä¿è·
OTPã·ã¹ãã ãèšèšããéã«ã¯ãã»ãã¥ãªãã£ãäž»èŠãªé¢å¿äºã«ããå¿ èŠããããŸãã é©åã«å¯ŸåŠããªããšãããã€ãã®è匱æ§ãã·ã¹ãã ã䟵害ããå¯èœæ§ããããŸãã
3.1. ã¬ãŒãå¶éãšã¹ããããªã³ã°
ãã«ãŒããã©ãŒã¹æ»æãé²ãããã«ãããã³ããšã³ããšããã¯ãšã³ãã®äž¡æ¹ã§ã¬ãŒãå¶éãšã¹ããããªã³ã°ã¡ã«ããºã ãå®è£ ããŸãã ã¬ãŒãå¶éã¯ããŠãŒã¶ãŒãç¹å®ã®æéæ å ã«å®è¡ã§ããOTPãªã¯ãšã¹ãã®æ°ãå¶éããŸãã ã¹ããããªã³ã°ã¯ãæ»æè ãåäžã®IPã¢ãã¬ã¹ãŸãã¯ããã€ã¹ããã®ãªã¯ãšã¹ãã§ã·ã¹ãã ãæº¢ããããã®ãé²ããŸãã
äŸïŒç¹å®ã®é»è©±çªå·ãšIPã¢ãã¬ã¹ã®çµã¿åãããããOTPãªã¯ãšã¹ãã1åããã3åã«å¶éããŸãã å¿ èŠã«å¿ããŠãçãããæŽ»åãæ€åºãããå Žåã¯ãããå³ããå¶éã®å®è£ ãæ€èšããŠãã ããã
3.2. å ¥åæ€èšŒãšãµãã¿ã€ãº
ããã³ããšã³ããšããã¯ãšã³ãã®äž¡æ¹ã§ããã¹ãŠã®ãŠãŒã¶ãŒå ¥åãæ€èšŒãããµãã¿ã€ãºããŸãã ããã³ããšã³ãã§ã¯ãOTP圢åŒãæ€èšŒããŸãïŒäŸïŒæ£ããé·ãã®æ°å€ã³ãŒãã§ããããšã確èªããŸãïŒã ããã¯ãšã³ãã§ã¯ãé»è©±çªå·ãšOTPããµãã¿ã€ãºããŠãã€ã³ãžã§ã¯ã·ã§ã³æ»æãé²ããŸãã ããã³ããšã³ãæ€èšŒã¯ãšã©ãŒããã°ããæ€åºããããšã§ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããŸãããããã¯ãšã³ãæ€èšŒã¯æªæã®ããå ¥åãé²ãããã«éèŠã§ãã
äŸïŒããã³ããšã³ãã§æ£èŠè¡šçŸã䜿çšããŠæ°å€OTPå ¥åã匷å¶ããããã¯ãšã³ããµãŒããŒåŽã®ä¿è·ã䜿çšããŠSQLã€ã³ãžã§ã¯ã·ã§ã³ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒããã®ä»ã®äžè¬çãªæ»æããããã¯ããŸãã
3.3. ã»ãã·ã§ã³ç®¡çãšããŒã¯ã³å
ãŠãŒã¶ãŒã»ãã·ã§ã³ãä¿è·ããããã«ãå®å šãªã»ãã·ã§ã³ç®¡çãšããŒã¯ã³åã䜿çšããŸãã OTPã®æ€èšŒãæåãããããŠãŒã¶ãŒã®å®å šãªã»ãã·ã§ã³ãäœæããã»ãã·ã§ã³ããŒã¿ããµãŒããŒåŽã«å®å šã«ä¿åãããŠããããšã確èªããŸãã ããŒã¯ã³ããŒã¹ã®èªèšŒã¢ãããŒãïŒäŸïŒJWTïŒãéžæããå Žåã¯ãHTTPSããã®ä»ã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ã䜿çšããŠãããã®ããŒã¯ã³ãä¿è·ããŸãã HttpOnlyãSecureãã©ã°ãªã©ãé©åãªã¯ãããŒã»ãã¥ãªãã£èšå®ãå¿ ãè¡ã£ãŠãã ããã
3.4. æå·å
ãŠãŒã¶ãŒã®é»è©±çªå·ãOTPãªã©ãæ©å¯ããŒã¿ã転éäžïŒHTTPSã䜿çšïŒãšä¿åæïŒããŒã¿ããŒã¹å ïŒã®äž¡æ¹ã§æå·åããŸãã ããã«ãããçèŽãæ©å¯ãŠãŒã¶ãŒæ å ±ãžã®äžæ£ã¢ã¯ã»ã¹ããä¿è·ãããŸãã 確ç«ãããæå·åã¢ã«ãŽãªãºã ã䜿çšããæå·åããŒã宿çã«ããŒããŒã·ã§ã³ããããšãæ€èšããŠãã ããã
3.5. OTPã®åå©çšã«å¯Ÿããä¿è·
OTPã®åå©çšãé²ãã¡ã«ããºã ãå®è£ ããŸãã OTPã¯ãéãããæéïŒäŸïŒæ°åïŒæå¹ã§ããå¿ èŠããããŸãã 䜿çšåŸïŒãŸãã¯æå¹æéåãåŸïŒã¯ããªãã¬ã€æ»æããä¿è·ããããã«OTPãç¡å¹ã«ããå¿ èŠããããŸãã äžåºŠã ã䜿çšããããŒã¯ã³ã¢ãããŒãã®äœ¿çšãæ€èšããŠãã ããã
3.6. ãµãŒããŒåŽã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹
次ã®ãããªãµãŒããŒåŽã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ãå®è£ ããŸãã
- 宿çãªã»ãã¥ãªãã£ç£æ»ãšãããã¬ãŒã·ã§ã³ãã¹ãã
- ã»ãã¥ãªãã£ã®è匱æ§ã«å¯ŸåŠããããã®ææ°ã®ãœãããŠã§ã¢ãšãããé©çšã
- æªæã®ãããã©ãã£ãã¯ãæ€åºãããããã¯ããããã®Webã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã¢ãŠã©ãŒã«ïŒWAFïŒã
4. ã°ããŒãã«OTPã·ã¹ãã åãã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãã¶ã€ã³
ã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã¯ãé©åã«èšèšãããUXãäžå¯æ¬ ã§ãããç¹ã«OTPãæ±ãå Žåã«ã¯éèŠã§ãã 以äžã®ç¹ãèæ ®ããŠãã ããã
4.1. æç¢ºãªæç€ºãšã¬ã€ãã³ã¹
OTPã®åä¿¡æ¹æ³ãšå ¥åæ¹æ³ã«é¢ããæç¢ºã§ç°¡æœãªæç€ºãæäŸããŸãã æè¡çãªå°éçšèªãé¿ããããŸããŸãªèæ¯ãæã€ãŠãŒã¶ãŒãç°¡åã«çè§£ã§ããå¹³æãªèšèã䜿çšããŸãã è€æ°ã®æ€èšŒæ¹æ³ã䜿çšããŠããå Žåã¯ããã®éããšåãªãã·ã§ã³ã®æé ãæç¢ºã«èª¬æããŠãã ããã
4.2. çŽæçãªå ¥åãã£ãŒã«ããšæ€èšŒ
çŽæçã§æäœããããå ¥åãã£ãŒã«ãã䜿çšããŸãã é©åãªå ¥åã¿ã€ãïŒäŸïŒOTPã®å Žåã¯`type="number"`ïŒãæç¢ºãªæ€èšŒã¡ãã»ãŒãžãªã©ãèŠèŠçãªæããããæäŸããŸãã ããã³ããšã³ãã§OTP圢åŒãæ€èšŒããŠããŠãŒã¶ãŒã«å³åº§ã«ãã£ãŒãããã¯ãæäŸããŸãã
4.3. ãšã©ãŒåŠçãšãã£ãŒãããã¯
å æ¬çãªãšã©ãŒåŠçãå®è£ ãããŠãŒã¶ãŒã«æçãªãã£ãŒãããã¯ãæäŸããŸãã OTPãééã£ãŠãããæå¹æéãåããŠããããŸãã¯æè¡çãªåé¡ãããå Žåã¯ãæç¢ºãªãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŸãã æ°ããOTPã®ãªã¯ãšã¹ãããµããŒããžã®é£çµ¡ãªã©ã圹ç«ã€è§£æ±ºçãææ¡ããŸãã 倱æããAPIåŒã³åºãã«å¯ŸããŠå詊è¡ã¡ã«ããºã ãå®è£ ããŸãã
4.4. ã¢ã¯ã»ã·ããªãã£
ããªãã®OTPã·ã¹ãã ãéããã®ãããŠãŒã¶ãŒã§ãå©çšã§ããããã«ããŸãã ã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒäŸïŒWCAGïŒã«åŸããèŠèŠãèŽèŠãéåãããã³èªç¥é害ã®ãã人ã ãUIã䜿çšã§ããããã«ããŸãã ããã«ã¯ãã»ãã³ãã£ãã¯HTMLã®äœ¿çšãç»åã®ä»£æ¿ããã¹ãã®æäŸãååãªè²ã®ã³ã³ãã©ã¹ãã®ç¢ºä¿ãå«ãŸããŸãã
4.5. åœéåãšããŒã«ã©ã€ãº
è€æ°ã®èšèªãšå°åããµããŒãããããã«ãã¢ããªã±ãŒã·ã§ã³ãåœéåïŒi18nïŒããŸãã åã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã«å¯ŸããŠãæåçã«é¢é£æ§ã®ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ãUIãšã³ã³ãã³ããããŒã«ã©ã€ãºïŒl10nïŒããŸãã ããã«ã¯ãããã¹ãã®ç¿»èš³ãæ¥ä»ãšæå»ã®åœ¢åŒã®èª¿æŽãããŸããŸãªé貚èšå·ã®åŠçãå«ãŸããŸãã UIãèšèšããéã«ã¯ãããŸããŸãªèšèªãšæåã®ãã¥ã¢ã³ã¹ãèæ ®ããŠãã ããã
5. ããã¯ãšã³ãçµ±åãšAPIèšèš
ããã¯ãšã³ãã¯ãOTPã®éä¿¡ãšæ€èšŒãæ åœããŸãã APIèšèšã¯ãOTPã·ã¹ãã ã®ã»ãã¥ãªãã£ãšä¿¡é Œæ§ã確ä¿ããããã«äžå¯æ¬ ã§ãã
5.1. APIãšã³ããã€ã³ã
次ã®ãããªãæç¢ºã§ç°¡æœãªAPIãšã³ããã€ã³ããèšèšããŸãã
- OTPãªã¯ãšã¹ãã®éå§ïŒ `/api/otp/send`ïŒäŸïŒ- é»è©±çªå·ãå ¥åãšããŠåãåããŸãã
- OTPã®æ€èšŒïŒ `/api/otp/verify`ïŒäŸïŒ- é»è©±çªå·ãšOTPãå ¥åãšããŠåãåããŸãã
5.2. APIèªèšŒãšèªå¯
APIãšã³ããã€ã³ããä¿è·ããããã«ãAPIèªèšŒãšèªå¯ã¡ã«ããºã ãå®è£ ããŸãã å®å šãªèªèšŒæ¹æ³ïŒäŸïŒAPIããŒãOAuth 2.0ïŒãšèªå¯ãããã³ã«ã䜿çšããŠãèªå¯ããããŠãŒã¶ãŒãšã¢ããªã±ãŒã·ã§ã³ãžã®ã¢ã¯ã»ã¹ãå¶éããŸãã
5.3. SMSã²ãŒããŠã§ã€çµ±å
SMSã¡ãã»ãŒãžãéä¿¡ããããã«ãä¿¡é Œã§ããSMSã²ãŒããŠã§ã€ãããã€ããŒãšçµ±åããŸãã ãããã€ããŒãéžæããéã«ã¯ãé ä¿¡çãã³ã¹ããããã³å°ççç¯å²ãªã©ã®èŠçŽ ãèæ ®ããŠãã ããã SMSé ä¿¡ã®å€±æãé©åã«åŠçãããŠãŒã¶ãŒã«ãã£ãŒãããã¯ãæäŸããŸãã
äŸïŒTwilioãVonageïŒNexmoïŒãªã©ã®ã°ããŒãã«SMSãããã€ããŒãšçµ±åããããŸããŸãªå°åã§ã®ã«ãã¬ããžãšäŸ¡æ Œèšå®ãèæ ®ããŠãã ããã
5.4. ãã®ã³ã°ãšã¢ãã¿ãªã³ã°
OTPãªã¯ãšã¹ããæ€èšŒè©Šè¡ãããã³ãšã©ãŒã远跡ããããã«ãå æ¬çãªãã®ã³ã°ãšã¢ãã¿ãªã³ã°ãå®è£ ããŸãã ã¢ãã¿ãªã³ã°ããŒã«ã䜿çšããŠãé«ããšã©ãŒçãçãããã¢ã¯ãã£ããã£ãªã©ã®åé¡ãç©æ¥µçã«ç¹å®ãã察åŠããŸãã ããã¯ãæœåšçãªã»ãã¥ãªãã£äžã®è åšãç¹å®ããã·ã¹ãã ãæ£ããæ©èœããŠããããšã確èªããã®ã«åœ¹ç«ã¡ãŸãã
6. ã¢ãã€ã«ã«é¢ããèæ ®äºé
å€ãã®ãŠãŒã¶ãŒã¯ãã¢ãã€ã«ããã€ã¹ã§OTPã·ã¹ãã ãšå¯Ÿè©±ããŸãã ã¢ãã€ã«ãŠãŒã¶ãŒåãã«ããã³ããšã³ããæé©åããŸãã
6.1. ã¬ã¹ãã³ã·ããã¶ã€ã³
ããŸããŸãªç»é¢ãµã€ãºãšåãã«UIãé©å¿ããããã«ãã¬ã¹ãã³ã·ããã¶ã€ã³ææ³ã䜿çšããŸãã ã¬ã¹ãã³ã·ããã¬ãŒã ã¯ãŒã¯ïŒBootstrapãMaterial UIãªã©ïŒã䜿çšããããã«ã¹ã¿ã CSSãèšè¿°ããŠããã¹ãŠã®ããã€ã¹ã§ã·ãŒã ã¬ã¹ãªãšã¯ã¹ããªãšã³ã¹ãäœæããŸãã
6.2. ã¢ãã€ã«å ¥åã®æé©å
ã¢ãã€ã«ããã€ã¹ã§OTPã®å ¥åãã£ãŒã«ããæé©åããŸãã å ¥åãã£ãŒã«ãã«`type="number"`屿§ã䜿çšããŠãã¢ãã€ã«ããã€ã¹ã«æ°å€ããŒããŒãã衚瀺ããŸãã ç¹ã«ããŠãŒã¶ãŒãSMSãåä¿¡ããã®ãšåãããã€ã¹ããã¢ããªã±ãŒã·ã§ã³ãæäœããŠããå Žåã¯ãèªåå ¥åãªã©ã®æ©èœã远å ããããšãæ€èšããŠãã ããã
6.3. ã¢ãã€ã«åºæã®ã»ãã¥ãªãã£å¯Ÿç
ããã€ã¹ãäžå®æé䜿çšãããŠããªãå Žåã«ãŠãŒã¶ãŒã«ãã°ã€ã³ãèŠæ±ãããªã©ãã¢ãã€ã«åºæã®ã»ãã¥ãªãã£å¯Ÿçãå®è£ ããŸãã 远å ã®ã»ãã¥ãªãã£ã®ããã«ã2èŠçŽ èªèšŒã®å®è£ ãæ€èšããŠãã ããã ã·ã¹ãã ã®ã»ãã¥ãªãã£èŠä»¶ã«å¿ããŠãæçŽèªèšŒãé¡èªèãªã©ã®ã¢ãã€ã«åºæã®èªèšŒæ¹æ³ãæ€èšããŠãã ããã
7. åœéåïŒi18nïŒãšããŒã«ã©ã€ãºïŒl10nïŒã®æŠç¥
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ããµããŒãããã«ã¯ãi18nãšl10nãæ€èšããå¿ èŠããããŸãã i18nã¯ããŒã«ã©ã€ãºã®ããã«ã¢ããªã±ãŒã·ã§ã³ãæºåããl10nã¯ã¢ããªã±ãŒã·ã§ã³ãç¹å®ã®ãã±ãŒã«ã«é©å¿ãããããšã«é¢ä¿ããŸãã
7.1. ããã¹ãã®ç¿»èš³
ãã¹ãŠã®ãŠãŒã¶ãŒåãããã¹ããè€æ°ã®èšèªã«ç¿»èš³ããŸãã 翻蚳ã管çããããã¹ããã³ãŒãã«çŽæ¥ããŒãã³ãŒãã£ã³ã°ããããšãé¿ããããã«ã翻蚳ã©ã€ãã©ãªãŸãã¯ãµãŒãã¹ã䜿çšããŸãã ã¡ã³ããã³ã¹ãšæŽæ°ã容æã«ããããã«ã翻蚳ãåå¥ã®ãã¡ã€ã«ïŒäŸïŒJSONãã¡ã€ã«ïŒã«ä¿åããŸãã
äŸïŒReactã¢ããªã±ãŒã·ã§ã³ã§ç¿»èš³ã管çããã«ã¯ãi18nextãreact-i18nextã®ãããªã©ã€ãã©ãªãå©çšããŠãã ããã Vue.jsã¢ããªã±ãŒã·ã§ã³ã®å Žåã¯ãVue i18nãã©ã°ã€ã³ã®äœ¿çšãæ€èšããŠãã ããã
7.2. æ¥ä»ãšæå»ã®ãã©ãŒããã
æ¥ä»ãšæå»ã®ãã©ãŒãããããŠãŒã¶ãŒã®ãã±ãŒã«ã«é©å¿ãããŸãã ãã±ãŒã«åºæã®æ¥ä»ãšæå»ã®ãã©ãŒããããåŠçããã©ã€ãã©ãªã䜿çšããŸãïŒäŸïŒMoment.jsãdate-fnsããŸãã¯JavaScriptã®ãã€ãã£ã`Intl`APIïŒã å°åã«ãã£ãŠæ¥ä»ãæå»ãããã³æ°å€ã®ãã©ãŒãããèŠåãç°ãªããŸãã
äŸïŒç±³åœã§ã¯ãæ¥ä»ã®åœ¢åŒã¯MM / DD / YYYYã§ããå¯èœæ§ããããŸããããšãŒãããã§ã¯DD / MM / YYYYã§ãã
7.3. æ°åãšé貚ã®ãã©ãŒããã
ãŠãŒã¶ãŒã®ãã±ãŒã«ã«åºã¥ããŠãæ°åãšé貚ããã©ãŒãããããŸãã JavaScriptã®`Intl.NumberFormat`ã®ãããªã©ã€ãã©ãªã¯ããã±ãŒã«å¯Ÿå¿ã®ãã©ãŒããããªãã·ã§ã³ãæäŸããŸãã é貚èšå·ãšå°æ°ç¹ã»ãã¬ãŒã¿ãŒããŠãŒã¶ãŒã®å°åã«å¯ŸããŠæ£ãã衚瀺ãããŠããããšã確èªããŠãã ããã
7.4. RTLïŒå³ããå·ŠïŒèšèªã®ãµããŒã
ã¢ã©ãã¢èªãããã©ã€èªãªã©ã®å³ããå·ŠïŒRTLïŒèšèªãã¢ããªã±ãŒã·ã§ã³ã§ãµããŒãããŠããå Žåã¯ãRTLã¬ã€ã¢ãŠãããµããŒãããããã«UIãèšèšããŸãã ããã«ã¯ãããã¹ãã®æ¹åã®å転ãèŠçŽ ã®å³æããããã³å³ããå·Šãžã®èªã¿åãããµããŒãããããã®ã¬ã€ã¢ãŠãã®èª¿æŽãå«ãŸããŸãã
7.5. é»è©±çªå·ã®ãã©ãŒããã
ãŠãŒã¶ãŒã®åœã³ãŒãã«åºã¥ããŠãé»è©±çªå·ã®ãã©ãŒããããåŠçããŸãã é»è©±çªå·ã®ãã©ãŒãããã©ã€ãã©ãªãŸãã¯ãµãŒãã¹ã䜿çšããŠãé»è©±çªå·ãæ£ãã圢åŒã§è¡šç€ºãããŠããããšã確èªããŸãã
äŸïŒ+1ïŒ555ïŒ123-4567ïŒUSïŒå¯Ÿ+44 20 7123 4567ïŒUKïŒã
8. ãã¹ããšãããã€
OTPã·ã¹ãã ã®ã»ãã¥ãªãã£ãä¿¡é Œæ§ãããã³äœ¿ããããã確ä¿ããã«ã¯ã培åºçãªãã¹ããäžå¯æ¬ ã§ãã
8.1. ãŠããããã¹ã
åã ã®ã³ã³ããŒãã³ãã®æ©èœãæ€èšŒããããã«ããŠããããã¹ããäœæããŸãã ããã³ããšã³ãããžãã¯ãAPIåŒã³åºããããã³ãšã©ãŒåŠçããã¹ãããŸãã ãŠããããã¹ãã¯ãã·ã¹ãã ã®åéšåãåç¬ã§æ£ããæ©èœããããšã確èªããã®ã«åœ¹ç«ã¡ãŸãã
8.2. çµ±åãã¹ã
ããã³ããšã³ããšããã¯ãšã³ããªã©ãããŸããŸãªã³ã³ããŒãã³ãéã®çžäºäœçšãæ€èšŒããããã«ãçµ±åãã¹ããå®è¡ããŸãã OTPã®éä¿¡ããæ€èšŒãŸã§ãå®å šãªOTPãããŒããã¹ãããŸãã
8.3. ãŠãŒã¶ãŒåãå ¥ããã¹ãïŒUATïŒ
ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«é¢ãããã£ãŒãããã¯ãåéããããã«ãå®éã®ãŠãŒã¶ãŒã§UATã宿œããŸãã ããŸããŸãªããã€ã¹ãšãã©ãŠã¶ãŒã§ã·ã¹ãã ããã¹ãããŸãã ããã¯ã䜿ããããã®åé¡ãç¹å®ããã·ã¹ãã ããŠãŒã¶ãŒã®ããŒãºãæºãããŠããããšã確èªããã®ã«åœ¹ç«ã¡ãŸãã
8.4. ã»ãã¥ãªãã£ãã¹ã
ã»ãã¥ãªãã£ã®è匱æ§ãç¹å®ããŠå¯ŸåŠããããã«ããããã¬ãŒã·ã§ã³ãã¹ããªã©ã®ã»ãã¥ãªãã£ãã¹ããå®è¡ããŸãã ã€ã³ãžã§ã¯ã·ã§ã³æ»æãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒãããã³ã¬ãŒãå¶éã®åé¡ãªã©ãäžè¬çãªè匱æ§ããã¹ãããŸãã
8.5. ãããã€æŠç¥
ãããã€æŠç¥ãšã€ã³ãã©ã¹ãã©ã¯ãã£ãæ€èšããŠãã ããã éçã¢ã»ãããæäŸããããã«CDNã䜿çšããããã¯ãšã³ããã¹ã±ãŒã©ãã«ãªãã©ãããã©ãŒã ã«ãããã€ããŸãã ãããã€äžã«çºçããåé¡ãç¹å®ããŠå¯ŸåŠããããã«ãã¢ãã¿ãªã³ã°ãšã¢ã©ãŒããå®è£ ããŸãã ãªã¹ã¯ã軜æžãããã£ãŒãããã¯ãåéããããã«ãOTPã·ã¹ãã ã®æ®µéçãªããŒã«ã¢ãŠããæ€èšããŠãã ããã
9. ä»åŸã®æ©èœåŒ·å
æ°ããã»ãã¥ãªãã£ã®è åšã«å¯ŸåŠãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã«ãOTPã·ã¹ãã ãç¶ç¶çã«æ¹åããŠãã ããã ããã«ããã€ãã®æœåšçãªæ©èœåŒ·åããããŸãã
9.1. ä»£æ¿æ€èšŒæ¹æ³
ã¡ãŒã«ãèªèšŒã¢ããªãªã©ã代æ¿ã®æ€èšŒæ¹æ³ãæäŸããŸãã ããã«ããããŠãŒã¶ãŒã¯è¿œå ã®ãªãã·ã§ã³ãå©çšã§ããããã«ãªããã¢ãã€ã«é»è©±ã«ã¢ã¯ã»ã¹ã§ããªããŠãŒã¶ãŒãããããã¯ãŒã¯ã®æ¥ç¶ãæªãå°åã«ãããŠãŒã¶ãŒã®ã¢ã¯ã»ã·ããªãã£ãåäžããŸãã
9.2. äžæ£è¡çºã®æ€åº
åãIPã¢ãã¬ã¹ãŸãã¯ããã€ã¹ããã®è€æ°ã®OTPãªã¯ãšã¹ããªã©ãçãããã¢ã¯ãã£ããã£ãç¹å®ããããã®äžæ£è¡çºæ€åºã¡ã«ããºã ãå®è£ ããŸãã æ©æ¢°åŠç¿ã¢ãã«ã䜿çšããŠãäžæ£è¡çºãæ€åºãã鲿¢ããŸãã
9.3. ãŠãŒã¶ãŒæè²
OTPã»ãã¥ãªãã£ãšãã¹ããã©ã¯ãã£ã¹ã«é¢ããæè²ãšæ å ±ããŠãŒã¶ãŒã«æäŸããŸãã ããã¯ããŠãŒã¶ãŒãã¢ã«ãŠã³ããä¿è·ããããšã®éèŠæ§ãçè§£ããã®ã«åœ¹ç«ã¡ããœãŒã·ã£ã«ãšã³ãžãã¢ãªã³ã°æ»æã®ãªã¹ã¯ãæžããããšãã§ããŸãã
9.4. é©å¿èªèšŒ
ãŠãŒã¶ãŒã®ãªã¹ã¯ãããã¡ã€ã«ãšè¡åã«åºã¥ããŠèªèšŒããã»ã¹ã調æŽããé©å¿èªèšŒãå®è£ ããŸãã ããã«ã¯ããªã¹ã¯ã®é«ããã©ã³ã¶ã¯ã·ã§ã³ãŸãã¯ãŠãŒã¶ãŒã«å¯ŸããŠè¿œå ã®èªèšŒèŠçŽ ãèŠæ±ããããšãå«ãŸããŸãã
10. çµè«
å®å šã§äœ¿ããããããã³ããšã³ãWeb OTPãããŒãžã£ãŒã®æ§ç¯ã¯ãã°ããŒãã«ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠäžå¯æ¬ ã§ãã å ç¢ãªã»ãã¥ãªãã£å¯Ÿçãå®è£ ããçŽæçãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãèšèšããåœéåãšããŒã«ã©ã€ãºæŠç¥ãæ¡çšããããšã«ããããŠãŒã¶ãŒããŒã¿ãä¿è·ããã·ãŒã ã¬ã¹ãªèªèšŒãšã¯ã¹ããªãšã³ã¹ãæäŸããOTPã·ã¹ãã ãäœæã§ããŸãã ã·ã¹ãã ã®ç¶ç¶çãªã»ãã¥ãªãã£ãšããã©ãŒãã³ã¹ã確ä¿ããã«ã¯ãç¶ç¶çãªãã¹ããã¢ãã¿ãªã³ã°ãããã³æ¹åãäžå¯æ¬ ã§ãã ãã®è©³çްãªã¬ã€ãã¯ãç¬èªã®å®å šãªOTPã·ã¹ãã ãæ§ç¯ããããã®åºçºç¹ãæäŸããŸãããåžžã«ææ°ã®ã»ãã¥ãªãã£ã®ãã¹ããã©ã¯ãã£ã¹ãšæ°ããªè åšãææ¡ããŠããããšãå¿ããªãã§ãã ããã